﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TP2.Lib
{
     [Serializable]
    public class TanqueEnergia : ElementoJuego
    {
        const int VIDA_TANQUE = 15, //cuando se acaba la vida deberia desaparecer el tanque?
                  RAPIDEZ_TANQUE = 0,
                  RADIO_TANQUE = 2,
                  ENERGIA_TANQUE = 25;
        
        #region /*----------Propiedades------------*/

        private int _energia;
        public int Energia
        {
            get { return this._energia; }
            set { this._energia = value;}
        }
        #endregion

        private TanqueEnergia() { } /*Contructor vacio, lo utiliza la serialización*/
        
        public TanqueEnergia(double[] posicion, int[] dimensiones) : base(posicion, dimensiones) 
        {
            this.Vida = VIDA_TANQUE;
            this.Rapidez = RAPIDEZ_TANQUE;
            this.Radio = RADIO_TANQUE;
            this.Energia = ENERGIA_TANQUE;
            this.Recorrido = null;
        }
       
        /*Metodos abstractos heredados: obligados a definirlos*/

        public override Proyectil Actuar()
        {
            return (null); //es estatico y no hace nada
        }
        
        public override void Impactar(ElementoJuego impactante)
        {
            impactante.ImpactarConTanqueEnergia(this);
        }

        public override void ImpactarConArma(Arma impactante)
        {
            // no debe hacer nada no importa de quien sea el arma
        }
         
        public override bool ImpactarConProyectil(Proyectil impactante)
        {
            // no debe hacer nada no importa de quien sea el proyectil
            return false;
        }
        
        public override void ImpactarConAvionCivil()
        {
            // no hace nada
        }

        public override void ImpactarConAvionEnemigo()
        {
            // no hace nada
        }

        public override void ImpactarConAvionJugador()
        {
            // TODO aca sí debe actiualizar las propiedaes correspondientes del jugador
            this.ModificarVida(this.Vida);
        }

        public override void ImpactarConHelicopteroPolicia()
        {
            // no hace nada
        }

        public override void ImpactarConTanqueEnergia(TanqueEnergia impactante)
        {
            // no hace nada
        }
    }
}

